
:root {

  --font-lang-scalar: 1;
  --font-size-scalar: 1;
  
  --font-size: calc(14px * var(--font-lang-scalar) * var(--font-size-scalar)); 
  font-size: var(--font-size);


  --bg-color: lightgray;
  --mg-color: #eee;
  --fg-color: #fafafa; 

  --adjust-color: #fafafa;
  --toggle-color: #0375ff; 

  --error-color: #fdd;
  --error-text-color: #b70f0f;
  --error-border-color: #ff6c71;

  --blue-color: #dde8ff;
  --blue-text-color: #0f1ab7;
  --blue-border-color: #6f6cff;

  --focus-color: blue; 
  --text-color: black; 

  --link-color: #02a;

  --code-bg-color: #eee;
  --code-color: black; 

  --card-shadow: -1px 1px 3px 0px #aaa;
  --card-border: none;
  --shadow-color: #00000033;

  --icon-color: #777;
  --icon-vibrant-color: #ee5454;

  /* popup */
  --control-hover-bg-color: #00000020;

  --header-icon-color: #555;
  --header-icon-muted-color: #888;
  --header-icon-active-color: #24c;

  --speed-focus-bg-color: #24a;
  --speed-focus-text-color: white;


  --track-color: #bbb;

  --thumb-color: #888;
  --thumb-border-color: #666;

  
  --select-red: red;
  --select-green: green;

  --ctx-border-ke: #00000022;
  --ctx-border: #00000044;
  --ctx-border-ko: #00000066;

  --border-ke: #00000022;
  --border: #00000044;
  --border-ko: #00000066;
}

:root.darkTheme {
  --bg-color: #111;
  --mg-color: #181818;
  --fg-color: #222; 

  --adjust-color: #272727;
  --toggle-color: #8a80ff; 
  
  --error-color: #683131;
  --error-text-color: #ffe0e0;
  --error-border-color: #4d0d10;

  --blue-color: #37395d;
  --blue-text-color: #edeeff;
  --blue-border-color: #060726;

  --focus-color: yellow; 
  --text-color: white; 

  --link-color: #fff816;

  --code-bg-color: #777;
  --code-color: white; 

  --card-bg-color: var(--bg-color);
  --card-shadow: -1px 1px 3px 0px black;
  --card-border: 1px solid #555;
  --shadow-color: #00000088;
  
  --icon-color: #888;
  --icon-vibrant-color: #80beff;

  /* popup */
  --control-hover-bg-color: #ffffff10;

  --header-icon-color: #eee;
  --header-icon-muted-color: #aaa;
  --header-icon-active-color: #8fc;

  --speed-focus-bg-color: #8fc;
  --speed-focus-text-color: black;

  --thumb-color: #ddd;
  --thumb-border-color: #eee;

  --select-red: #f66;
  --select-green: #35df35;

  --ctx-border-ke: #ffffff11;
  --ctx-border: #ffffff33;
  --ctx-border-ko: #ffffff44;
  
  input[type="checkbox"], input[type="range"] {
    filter: hue-rotate(26deg);
  }
  
}

body {
  font-family: "Segoe UI", "Avenir", system-ui, Courier, monospace;
  font-size: var(--font-size);
  margin: 0;
  padding: 0;
  background-color: var(--bg-color);
  color: var(--text-color);
}


* {
  box-sizing: border-box;
}

button, input, select, textarea {
  font: inherit;
  letter-spacing: inherit;
  word-spacing: inherit;

  &:focus {
    outline: 1px solid var(--focus-color);
  }
}

select {
  background-color: var(--fg-color); 
  color: var(--text-color); 
  border: 1px solid var(--ctx-border); 
  padding: 3px 5px;

  &.padded {
  }
}

button, input[type="text"], textarea {
  background-color: var(--fg-color);
  color: var(--text-color);
  border: 1px solid var(--ctx-border); 
  padding:  5px;

  &:focus {
    border: 1px solid var(--focus-color);
    outline: none;
  }

  &.error {
    background-color: var(--error-color);
    color: var(--error-text-color);
    border-color: var(--error-border-color);
  }

  &.blue {
    background-color: var(--blue-color);
    color: var(--blue-text-color);
    border-color: var(--blue-border-color);
  }
}

input[type="text"] {
  min-width: 0;
  width: 100%;

  &.error {
    background-color: var(--error-color);
  }

  &:disabled {
    opacity: 0.7;
    pointer-events: none;
  }
}

button {
  cursor: pointer; 

  &.large {
    font-size: 1.2em;
    padding: 7px;
  }

  &:disabled {
    opacity: 0.5;
  }

  &.toggle {
    border-style: dashed;
    color: var(--text-color);

    &:enabled.active {
      border-style: solid;
      border-color: var(--text-color);
      font-weight: bold;
    }
  }
}


a, a:visited {
  color: var(--link-color); 
  text-decoration: none;
  &:hover {
    text-decoration: underline;
  }
}

svg {
  vertical-align: middle;
}

code {
  padding: 2px 5px;
  border: 1px solid currentColor;
}

.displaynone {
  display: none;
}

.card {
  padding: 10px;
  background-color: var(--fg-color);
  border: 1px solid var(--ctx-border);
  color: var(--text-color);
  display: inline-block;
  font-size: 1.1em;
  line-height: 2;
}


input[type="checkbox"] {
  width: 1.07rem;
  height: 1.07rem;
}

.icon {
  color: var(--icon-color);
  padding: 0;
  background-color: inherit;
  border: none;

  &:focus {
    outline: 1px solid var(--focus-color);
    border: none;
  }

  &.muted {
    color: var(--icon-color);
  }

  &.active {
    color: var(--icon-vibrant-color);
  }
}

* > svg {
  opacity: 0.8;

  &:hover {
    opacity: 1;
  }
}

.tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;

  & > button {
    border-radius: 5px 5px 0px 0px;
    border: 1px solid var(--ctx-border);
    border-top-width: 2px;
    background-color: var(--mg-color);
    opacity: 0.8;

    &.open {
      background-color: var(--fg-color);
      border-bottom: 1px solid transparent;
      opacity: 1;
    }


    
    &.active {
      border-top: 2px solid var(--header-icon-active-color);
    }

    &:focus {
      outline: 1px solid var(--focus-color);
    }
  }
}

input[type=range] {
  width: 100%;
  background-color: transparent;
}

input[type=range]::-moz-range-track {
  background: var(--track-color);
  border: none;
  width: 100%;
  height: 6px;
  cursor: pointer;
}
input[type=range]::-moz-range-thumb {
  width: 10px;
  height: 20px;
  background: var(--thumb-color);
  border: 1px solid var(--thumb-border-color-color);
  border-radius: 0px;
  /* border-radius: 8px; */
  cursor: pointer;
}


/* TODO: Remove */
input[type="color"] {
  background-color: var(--fg-color);
  border: none;
  width: 3.5rem;
  height: 2.14rem;
}

select {
  &.green {
    border: 1px solid var(--select-green);
    color: var(--select-green);
  }
  &.red {
    border: 1px solid var(--select-red);
    color: var(--select-red);
  }
}

.Reset {
  color: var(--icon-color);
  border: 1px solid var(--icon-color);
  padding: 2px;
  box-sizing: content-box;
  opacity: 0.5;
  user-select: none;

  &.active {
    color: var(--header-icon-active-color);
    border: 1px solid var(--header-icon-active-color);
    opacity: 1;
  }
}

.NumericInput > input {
  text-align: center;
}

.frmax {
  display: grid;
  grid-template-columns: 1fr max-content;
  column-gap: 5px;
}

.mxmx {
  display: grid;
  grid-template-columns: max-content max-content;
  column-gap: 5px;
  align-items: center;
}